﻿using System;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using App_Code.consultasSql.ConsultasSeguridad;
using consultasSql.consultasVarias;


public partial class Stdby_OrdenTrabajo_MasterPageOrdenTrabajo_MasterPageOrdenTrabajo : System.Web.UI.MasterPage
{
 
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["idOt"] != null)
        {
            string idOt = Session["idOt"].ToString().Trim();

            if (!String.IsNullOrEmpty(idOt))
            {
                if (new CExisteRegistro().existeRegistro("OTCab", "Id", idOt) || idOt.Equals("0"))
                {
                    txtNroOrdenTrabajo.Text = idOt;
                    activarPestanias(idOt);
                }
                else
                {
                    Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx", false);
                }
            }
            else
            {
                Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx", false);
            }
        }
        else
        {
            Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx", false);
        }
        

    }


    //activo las pestañas de Ot de acuerdo a si estan cargadas
    private void activarPestanias(string IdOtCab)
    {
        //desbilito todos los botones
        btnOrdenTrabajo.Enabled = false;
        btnInsAsociados.Enabled = false;
        btnTransporte.Enabled = false;
        btnRemito.Enabled = false;
        btnAsignaNroRemito.Enabled = false;
        btnRequisiciónOc.Enabled = false;
        btnFacProovedor.Enabled = false;
        btnDesvinculaElementos.Enabled = false;
        btnAnulaOt.Enabled = false;


        string consulta = "IF EXISTS(SELECT * FROM EstadosOT WHERE IdOtCab = @IdOtCab) BEGIN SELECT TOP 1 CASE WHEN OrdenTrabajo = 1 THEN 1 ELSE 0 END AS 'OrdenTrabajo', CASE WHEN InsumosAsociados = 1 THEN 1 ELSE 0 END AS 'InsumosAsociados', CASE WHEN Transporte = 1 THEN 1 ELSE 0 END AS 'Transporte', CASE WHEN RemitoGenerado = 1 THEN 1 ELSE 0 END AS 'RemitoGenerado', CASE WHEN NroRemitoAsignado = 1 THEN 1 ELSE 0 END AS 'NroRemitoAsignado', CASE WHEN RequisicionOc = 1 THEN 1 ELSE 0 END AS 'RequisicionOc', CASE WHEN FacturaAsignada = 1 THEN 1 ELSE 0 END AS 'FacturaAsignada', CASE WHEN ElementosDesvinculados = 1 THEN 1 ELSE 0 END AS 'ElementosDesvinculados', CASE WHEN Anulada = 1 THEN 1 ELSE 0 END AS 'Anulada' FROM EstadosOT WHERE IdOtCab = @IdOtCab END      ELSE BEGIN SELECT 0 AS 'OrdenTrabajo', 0 AS 'InsumosAsociados', 0 AS 'Transporte', 0 AS 'RemitoGenerado', 0 AS 'NroRemitoAsignado', 0 AS 'RequisicionOc', 0 AS 'FacturaAsignada', 0 AS 'ElementosDesvinculados', 0 AS 'Anulada' END";

        SqlCommand command = new SqlCommand();


        command.CommandType = CommandType.Text;
        command.CommandText = consulta;

        command.Parameters.Clear();

        command.Parameters.Add(new SqlParameter("@IdOtCab", SqlDbType.Int));
        command.Parameters["@IdOtCab"].Value = IdOtCab;

        DataTable tabla = new CDarDataSet().darDataTable(command);


        if (tabla != null)
        {
            Usuarios usuario = (Usuarios)Session["Usuario"];
            if (usuario != null)
            {
                btnEstadoOt.Enabled = usuario.VerificarPermisoUsuario("Solapa 8: Estados OT", true, true);

                /*
                 Solo se habilitan los siguientes botones de acuerdo al permiso y si estan cargados los datos en las pestañas anteriores.
                 */

                if (!Convert.ToBoolean(tabla.Rows[0]["RemitoGenerado"]))
                {
                    //solo se permiten ingresar si no fue emitido el remito
                    btnOrdenTrabajo.Enabled = usuario.VerificarPermisoUsuario("Solapa 1: Orden de Trabajo", true, true);

                    btnInsAsociados.Enabled = Convert.ToBoolean(tabla.Rows[0]["OrdenTrabajo"]) && usuario.VerificarPermisoUsuario("Solapa 2: Insumos Asociados", true, true);
                    btnTransporte.Enabled = Convert.ToBoolean(tabla.Rows[0]["InsumosAsociados"]) && usuario.VerificarPermisoUsuario("Solapa 3: Pedido de Transporte", true, true);
                }


                /*----------*/
                btnRemito.Enabled = Convert.ToBoolean(tabla.Rows[0]["Transporte"]) && usuario.VerificarPermisoUsuario("Solapa 4: Remito", true, true);

                btnAsignaNroRemito.Enabled = Convert.ToBoolean(tabla.Rows[0]["RemitoGenerado"]) && usuario.VerificarPermisoUsuario("Solapa 5: Asigna N° Remito", true, true);
                btnRequisiciónOc.Enabled = Convert.ToBoolean(tabla.Rows[0]["NroRemitoAsignado"]) && usuario.VerificarPermisoUsuario("Solapa 6: Requisición y OC", true, true);
                btnFacProovedor.Enabled = Convert.ToBoolean(tabla.Rows[0]["RequisicionOc"]) && usuario.VerificarPermisoUsuario("Solapa 7: Factura Proveedor", true, true);

                /*----------*/

                if (Convert.ToBoolean(tabla.Rows[0]["OrdenTrabajo"]) || Convert.ToBoolean(tabla.Rows[0]["InsumosAsociados"]))
                {
                    //solo se permite desvincular si se cargaron elementos o insumos.
                    btnDesvinculaElementos.Enabled = true && usuario.VerificarPermisoUsuario("Solapa 9: Desvincular Elementos e Insumos", true, true);
                }

                //tiene que estar guardada la orden de trabajo
                btnAnulaOt.Enabled = Convert.ToBoolean(tabla.Rows[0]["OrdenTrabajo"]) && usuario.VerificarPermisoUsuario("Solapa 10: Anula OT", true, true);
            }

        }
    }






    private void dirigir(string IdOtCab)
    {
        string direccion = "";//dirigir(IdOtCab);//obtengo dirección a la cual debo dirigir

        string dir = direccion;

        string url = HttpContext.Current.Request.Url.LocalPath;//obtengo pagina actual

        //busco el nombre de la pagina sin parametros
        dir = dir.Substring(dir.LastIndexOf("/"), dir.Length - dir.LastIndexOf("/"));

        if (dir.LastIndexOf("?") != -1)
        {
            dir = dir.Substring(0, dir.LastIndexOf("?"));
        }

        url = url.Substring(url.LastIndexOf("/"), url.Length - url.LastIndexOf("/"));

        if (url.LastIndexOf("?") != -1)
        {
            url = url.Substring(0, url.LastIndexOf("?"));
        }

        //comparo si son diferentes dirijo, es para evitar un bucle infinito
        if (!dir.Equals(url))
        {
            Response.Redirect(direccion, false);
        }

    }


}
